/**
 * 需求:
 *  1:     以 /public 开头,  使用其他部分（正则）
 *  2:     精确:  / 或者 /abc  要替换成 /xxx
 *  2.2:   模糊:  /xxx 开头 替换成   /aaa
 */
module.exports = (rules) => {
    return async (ctx, next) => {
        for (let i = 0; i < rules.length; i++) {
            let rule = rules[i];
            if (rule.regex) {
                let result = rule.regex.exec(ctx.url);
                // 匹配到结果
                if (result) {
                    // 模糊匹配路由, 并且直接使用 .* 的内容重写路由
                    if (!rule.dist) {
                        ctx.url = result[1];
                    } else {
                        // 模糊匹配路由, 使用 dist 重写路由
                        ctx.url = rule.dist;
                    }
                }
            }
            if (rule.src === ctx.url) { // 当前路由与匹配路由相同
                ctx.url = rule.dist;
            }
        }

        // 处理静态文件
        // if (ctx.url.startsWith('/public')) {
        //     ctx.url = ctx.url.replace('/public', '');
        // }
        // // 处理首页
        // if (ctx.url === '/') {
        //     ctx.url = '/user/login';
        // }

        await next();
    }
}